package u14.ej01;

import java.sql.ResultSet;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import javax.swing.table.DefaultTableModel;

public class AccesoRAM implements IAccesoRN {

	private Map<Integer, Cliente> clientes;
	private static IAccesoRN accesoRAM=new AccesoRAM();
	
	public static IAccesoRN getAccesoRAM() {
		return accesoRAM;
	}
	private AccesoRAM() {
		clientes = new HashMap<Integer, Cliente>();
	}

	@Override
	public void insertarPersona(int dni, String nombre, String apellido)
			throws DniDuplicado {
		if (clientes.containsKey(new Integer(dni))) {
			throw (new DniDuplicado());
		} else {
			Cliente personaAInsertar = new Cliente(dni, nombre, apellido);
			clientes.put(new Integer(dni), personaAInsertar);
			System.out.println(clientes);
		}
	}

	@Override
	public String consultarApellido(int dni) throws DniInexistente {
		String apellidoADevolver=null;
		if (clientes.containsKey(new Integer(dni))) {
			Cliente clienteRecuperado=clientes.get(new Integer(dni));
			apellidoADevolver=clienteRecuperado.getApellido();
		}
		else {
			throw new DniInexistente();
		}
		return apellidoADevolver;
	}

	@Override
	public String consultarNombre(int dni) throws DniInexistente {
		String nombreADevolver=null;
		if (clientes.containsKey(new Integer(dni))) {
			Cliente clienteRecuperado=clientes.get(new Integer(dni));
			nombreADevolver=clienteRecuperado.getNombre();
		}
		else {
			throw new DniInexistente();
		}
		return nombreADevolver;
	}

	@Override
	public DefaultTableModel getDatosClientes() {
		DefaultTableModel tabla=new DefaultTableModel();
		Object[] encabezado={"DNI","NOMBRE","APELLIDO"};
		tabla.setColumnIdentifiers(encabezado);
		
		Collection<Cliente> datos=clientes.values();
		
		for(Cliente c: datos){
			Object[] fila=new Object[3];
			fila[0]=c.getDni();
			fila[1]=c.getNombre();
			fila[2]=c.getApellido();
			tabla.addRow(fila);
		}
		
		return tabla;
	}

}
